听说算法工程师80%的时间都在做特征工程?
机器学习界普遍认为:“数据和特征决定了机器学习算法的上限,而模型和算法只是不断逼近这个上限而已。” 在这场以模型效果提升为目标的数据算法博弈中,基于大数据的简单模型往往胜于基于小数据的复杂模型,优质的数据对预测结果大有裨益,而简单模型有效的关键在于好的特征工程。
在这种背景下,精细化特征工程成为成功搭建模型的必要条件。特征工程尽管重要但少有人提及,它既是科学,需要严谨细致的理论指导,它又是艺术,需要不断创新的实验精神,下面我们来一起了解下这门艺术!
1. 特征工程是连接数据和算法的桥梁
要想了解特征工程必须首先了解什么是机器学习,机器学习致力于研究如何通过计算的手段,利用经验来改善系统自身的性能。一个典型的机器学习框架可以用问题抽象,特征挖掘,模型选择和模型融合四个步骤进行概括,这其中特征工程是连接数据和算法的桥梁。从数学的角度讲,特征工程就是将原始数据空间变换到新的特征空间,处理后的数据会以一种机器更容易理解的方式表达数据背后的逻辑,模型能够更好学习数据表面和隐藏的规律。
特征工程主要包含如下几个环节:数据观察—>数据清洗—>特征加工—>特征选择—>特征规约。好的特征工程不仅需要我们对模型算法有深入的理解,还要有较强的专业领域知识。我们将特征工程主要涵盖的环节以及各环节需要解决的问题总结在下方的导图中,以供大家参考。
接下来,我们挑选了几个建模过程中容易被忽略却重要的细节,和大家一起探索特征工程中的黑色艺术。
2. 好的特征工程建立在好的数据质量
在数据挖掘工作过程中存在普遍共识:垃圾进垃圾出,好的特征工程一定建立在好的数据质量之上。那么如何能保证好的数据质量呢?
细节决定成败-缺失值处理
01
如XGBoost的一些机器学习算法可以在模型构建过程中对特征缺失值进行处置,但是俯视整个建模流程,我们并不能“放心的”把数据缺失问题直接交给算法。我们首先来回顾一下XGBoost是如何处理特征中的缺失值的:XGBoost论文中曾提及,缺失值会被分别分入左右子树,比较两者损失函数值下降的程度,然后选择最优的划分方式。这里缺失值其实是被看做一个不同于变量中任何值的值(例如:-9999)。那为什么说我们仍需在模型训练阶段之前处理缺失值?原因在于:我们需要考察值的缺失类型。
谨慎加工防止数据穿越
02
工作中我们最常遇到的数据是时间序列数据,时间序列数据不同于截面数据,前者是按不同的时间节点收集数据,往往,当我们在不同时间观察同一个观察指标时,数据会表现出一定波动甚至周期性的差异。而数据穿越问题就像电影蝴蝶效应中的情节,如果失去时间因果论证的相关信息,只能是金玉其外,败絮其中的伪相关。
举个例子,当我们要预测一个人购买手机的概率,原有的因果关联是这个人买到新手机后会大概率搜索浏览手机壳商品,假如做特征时发生数据穿越,我们会得到“用户搜索浏览手机壳商品后”大概率“用户会购买手机”的错误结论。结果导致模型效果在训练阶段被高估很多,实际上线后效果一落千丈。
稳定大于一切
03
在实际模型上线之前,模型都需要通过严格的评审。除了亮眼的模型效果外,模型专家往往更关注的是模型稳定性。模型由特征组成,所以考察特征的稳定性对于模型稳定性至关重要。如果我们选用了分布随时间有较大变化的特征作为模型的重要支持特征,模型效果就会变得非常不稳定。例如,当我们要预测一个人未来一个月的商城购买金额时,如果我们用“冬春两季”的表现数据建模去预测“夏季”的消费,就要注意“羽绒服”、“取暖器”这类强季节性品类特征的甄选,因为它们不会在一年四季均有稳定可用的统计量。
3. 特征构造方法需要量体裁衣
在日常生活中,我们接触到的数据类型方方面面,近年来步入AI时代,人们对数据的探索视野已跳出二维数据框架,踏上对图像、声音或时空数据的探索征途。以下,我们将结合风控场景介绍三种特殊的数据类型构造方法:
时间序列特征
01
前文提及,时间序列数据相比截面数据多了一个时间维度,多出来的时间维度信息其实可以提取出两层含义:“趋势”和“周期”。趋势类特征的加工在时序数据中具有特色意义,此方法不会对业务背景做假设,通常可采用线性拟合来进行简单构造。例如,我们想要加工某商品的历史销量趋势,先逐月统计商品月均销量,套用最小二乘推得的公式计算并提取斜率,在后期实际建模会得到的很好效果。
周期类特征的提取在时序类数据中基础而重要,我们需要根据收集到的数据时长提取相应时间标签:不到一年的数据可以加工“星期”标签,假如我们有两年训练数据,就可以考虑“月份”、“季度”标签。在树模型中,此类特征不一定具有很强的排序能力,但却拥有很好的分群能力。
除常规加工方法外,还可借助当前流行的深度学习方法。例如我们可以用LSTM对历史序列数据做拆分处理,直接对目标变量进行预测输出,也可以通过双向GRU和Attention神经网络等方法用全连接层之前的向量作为特征,喂给模型进行处理。
位置特征
02
位置数据作为用户线下轨迹的重要数据来源,可以在一定程度上反映用户的信用或欺诈风险,这类数据是构造画像模型时非常重要的一类数据。IP、WiFi、GPS报点和地址数据是最常挖掘的数据,但是当构造用户位置特征时,我们需要充分利用不同数据源特性进行加工。比如IP和WiFi这类数据在定位用户位置时,仅能在省市粒度上保证精度,想要构造更细粒度的特征需要基于更细粒度的数据源。
在风控场景下,欺诈团队往往将设备集中放置在某一固定位置,并且常会共享WiFi,共用设备。这时,我们可以针对GPS数据进行聚类发现该类高风险设备。常用的方法是用DBSCAN算法发现聚类中心,在构造特征的时候基于和聚类中心位置的距离分段进行特征加工。除此之外,用户的常活跃范围在一定时间内往往变化不大。当用户进行重要的金融活动时,如果我们能判断用户是否在常驻范围内进行该活动,势必能更好地保障该行为的可信性。在构造此类特征时,一种方法是将用户常活跃区域进行聚类(如下图所示),将聚类中心使用Geohash将经纬度转化为字符串,之后在比较时将距离计算转化成字符串比较问题;另一种方法,基于用户的访问时间及访问频次,构造序列通过word2vec等方法构造embedding向量直接喂给模型。
文本特征
03
UGC时代,文本数据是最常见的数据类型,对文本数据的挖掘一直以来都是研究的重点,相关的研究已经非常成熟。在风控场景下,大量的商品描述、评论等文本数据,为我们挖掘提供了重要数据来源。某种程度上用户的评论信息可以反映一定的信用风险,同时购买、搜索等文本信息反映了用户的行为意图,对营销响应类模型开发具有一定的价值,这方面的研究还在如火如荼的进行。下面我们简单介绍一下两种比较有效的处理方法。
方法一
方法二
特征筛选
04
建模前筛选 - 过滤式
建模中筛选 - 模型嵌入式
4. 特征工程自动化修远兮却可期
(1)当前自动化特征工程仍处于基础阶段,在实际的应用中,对数据质量要求很高,数据的理解和分析仍然是最耗时部分,目前这部分仍然需要大量人工参与;
(2)自动化特征工程衍生特征本质上是人工经验的提炼,能否提高模型效果,提高部分是否可信,仍然需要大量时间论证;
(3)风控场景对于特征的可解释性,稳定性要求是重点,可解释性和稳定性仍然需要结合业务和专家经验进行判断;
5. 尾 章
读到此,想必您对特征工程已经有了大致的了解,体会了特征工程对于模型开发的重要性——好的模型效果建立在好的数据质量上,而且需要针对不同的数据采用不同的构造方法。在实际的工作中,我们只有结合数据处理和业务理解把特征工程做好,才能引爆特征工程隐藏的黑色艺术!最后,留几个小问题给您,欢迎评论区留言。【END】
1. 噪声数据一定是坏的吗?
2. 相对线性模型如(LR),XGBOOST等树模型算法在特征工程上有什么不同?
3. 如何有效衍生特征?
参考文献
1. He, Xinran, et al. "Practical Lessons from Predicting Clicks on Ads at Facebook." international workshop on data mining for online advertising (2014): 1-9.
2. 周志华,机器学习,清华大学出版社,2016: 247-256
3. Chen, Tianqi, and Carlos Guestrin. "XGBoost: A Scalable Tree Boosting System." knowledge discovery and data mining (2016): 785-794.
4. Mikolov et al., 2013b. Mikolov, T., Yih, W.-t., and Zweig, G. (2013b). Linguistic regularities in continuous space word representations. In hlt-Naacl, volume 13, pages 746–751.
5. Halevy, Alon, Peter Norvig, and Fernando Pereira. "The Unreasonable Effectiveness of Data." IEEE Intelligent Systems 24.2 (2009): 8-12.
关注技术说,我们只凭技术说话!
点在看会少个bug哦👇